"""
修改数据
"""
import pymysql

# 第一步：创建连接
conn = pymysql.connect(host='10.7.174.103', port=3306,
                       user='guest', password='Guest.618',
                       database='hrs', charset='utf8mb4')
try:
    # 第二步：获得游标对象
    with conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
        # 第三步：通过游标执行SQL
        cursor.execute(
            'select dno as no, dname as name, dloc as location from tb_dept'
        )
        # 第四步：通过游标抓取数据（查询结果）
        # fetchone / fetchmany / fetchall
        # 提示：如果查询结果数据体量很大，那么最好不使用fetchall，
        # 否则程序可能因为内存不足而崩溃，而且加载数据的时间也会特别长
        for row in iter(lambda: cursor.fetchone(), None):
            print(row)
# except指定的异常类型是父类型，那么可以捕获到子类型的异常
# 因为异常捕获需要遵循面向对象编程里氏替换原则（LSP - Liskov Substitution Principle）
# 任何时候都可以用子类型替换掉父类型，父类型未必能替换子类型
# 《小取》---> 白马，马也，乘白马，乘马也；骊马，马也，乘骊马，乘马也。
#        ---> 娣，美人也，爱娣，非爱美人也；盗，人也，恶盗，非恶人也。
# 《取周》 ---> 爱人，待周爱人而后为爱人。
except pymysql.DatabaseError as err:
    print(err)
finally:
    # 第五步：关闭连接（释放资源）
    conn.close()
